package com.tpl.core.basedata.dao;


import com.tpl.core.common.annotation.DaoAnnotation;
import com.tpl.core.entity.sys.Dept;
import com.tpl.core.entity.sys.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * 说明 :部门数据层操作接口
 * @author <a href="mailto:3380084@gmail.com">张坤雷</a>
 * @version 创建时间：2013-7-2 下午3:19:28 
 *
 */
@DaoAnnotation
public interface DeptDao {
	/**
	 * 
	 * 说明 :获取部门列表信息
	 * @param parentId TODO
	 */
	List<Dept> getDepts(@Param("userId")Long userId, @Param("rootId")Long parentId, @Param("org")Long orgId);
	/**
	 * 
	 * 说明 :获取部门列表信息
	 */
	List<Dept> getUserDepts(@Param("userId")Long userId);
	
	/**
	 * 
	 * 说明 :通过父节点ID获取部门列表信息
	 */
	List<Dept> getDeptsByParentId(@Param("parentId")Long parentId);
	
	/**
	 * 
	 * 说明 :获取部门信息
	 */
	Dept getDeptById(Long id);
	/**
	 * 
	 * 说明 :验证部门编码
	 */
	/*int checkDeptNo(@Param("deptNo")String deptNo,@Param("id")Long id);*/
	/**
	 * 
	 * 说明 :新增部门
	 */
	void insertDept(Dept dept);
	/**
	 * 
	 * 说明 :更新部门
	 */
	void updateDept(Dept dept);
	/**
	 * 
	 * 说明 :删除部门
	 */
	void deleteDept(Long id);
	
	/**
	 * 
	 * 说明 :通过名称获取部门id
	 */
	Long getIdByName(@Param("name")String name);
	
	/**
	 * 通过type查询部门
	 * @return
	 */
	List<Dept> getDeptByType(@Param("type")String type);
	
	/**
	 * 通过rootDeptId，userId获取部门
	 * @param rootDeptId，userId
	 * @return 
	 */
	List<Dept> getTransferDepts(@Param("rootDeptId")Long rootDeptId,@Param("userId")Long userId);
	
	

	/**
	 * 通过deptIds获取部门列表个数
	 * @param deptIds
	 * @return
	 */
	int getDeptByDeptIdsCount(String deptIds);
	/**
	 * 通过deptIds获取部门列表
	 * @param deptIds
	 * @return
	 */
	List<User> getDeptByDeptIds(@Param("deptIds")String deptIds, @Param("pageIndex")int pageIndex, @Param("pageSize")int pageSize);
	List<Dept> getDeptByIds(String deptIds);
	Dept getDeptByDeptNo(@Param("deptNo")String deptNo, @Param("centerId")Long centerId);
	/**
	 * 说明：验证部门编码
	 * @param type
	 * @param deptNo
	 * @param id
	 * @param parentId TODO
	 * @return
	 */



	int addcheckDeptNo(@Param("type")int type,@Param("deptNo")String deptNo,@Param("id")Long id, @Param("parentId")Long parentId);
	/**
	 * 查询部门列表
	 * @return
	 */
	List<Dept> getAllDept(@Param("deptName")String deptName);
}
